package net.teamclerks.rpgf.inventory.item.equipment;

import net.teamclerks.rpgf.inventory.item.EquipmentItem;
import net.teamclerks.rpgf.script.director.Director;

/**
 * ArmorItem is a particular kind of EquipmentItem which pertains
 * only to armor. Each Character has a map of ArmorItems in "slots".
 * The idea is that each slot represents some place a piece of armor
 * can be equipped.<br/><br/>
 * For example, an ArmorItem with armorClass = 0 might mean the
 * "helmet" slot for a Character. It is important to define equipment
 * slots statically upon implementing ArmorItem, as an ArmorItem is
 * unique to a Character via his slot (obviously, a Character can only
 * have one helmet equipped, so the Character's equipment map only has
 * one entry for slot 0 - helmet).
 * 
 * @author kain
 *
 */
public class ArmorItem extends EquipmentItem
{
  /// PUBLIC STATIC VARIABLES ///
  public static final int ARMOR_CLASS_CLOTH        = 0;
  public static final int ARMOR_CLASS_LEATHER      = 1;
  public static final int ARMOR_CLASS_MAIL         = 2;
  public static final int ARMOR_CLASS_PLATE        = 3;

  public static final int EQUIPMENT_SLOT_HELMET    = 0;
  public static final int EQUIPMENT_SLOT_SPAULDERS = 1;
  public static final int EQUIPMENT_SLOT_CHEST     = 2;
  public static final int EQUIPMENT_SLOT_BRACERS   = 3;
  public static final int EQUIPMENT_SLOT_GAUNTLETS = 4;
  public static final int EQUIPMENT_SLOT_BELT      = 5;
  public static final int EQUIPMENT_SLOT_LEGGINGS  = 6;
  public static final int EQUIPMENT_SLOT_BOOTS     = 7;
  
  /// DATAPOINTS ///
  protected int armorClass;
  
  /// PUBLIC CONSTRUCTOR ///
  /**
   * Public constructor.
   * @param director
   */
  public ArmorItem(Director director)
  {
    super(director);
  }
  
  /// PUBLIC METHODS ///
  /**
   * @return the armorClass
   */
  public final int getArmorClass()
  {
    return armorClass;
  }
  /**
   * @param armorClass the armorClass to set
   */
  public final void setArmorClass(int armorClass)
  {
    this.armorClass = armorClass;
  }
}
